"""
进程池的方法
app_async(func, args, kwargs)   使用非阻塞方式调用函数func
apply(func, args, kwargs)       使用阻塞方式调用函数func
close()                         关闭线程池，不在接收新任务
terminate()                     不管任务是否完成，立即终止
join()                          阻塞主进程，必须在terminate()和close()之后使用
"""
import time
from multiprocessing import Pool
import os
def task(name):
    print(f"子程序的pid：{os.getpid()},执行任务:{name}")
    time.sleep(1)
if __name__ == '__main__':
    # 获取时间戳
    start = time.time()
    # 主进程
    print("主进程开始执行")
    # 创建进程池
    p = Pool(3)
    # 创建任务
    for i in range(10):
        # 非阻塞方式
        p.apply_async(func=task, args=(i+1, ))
        # 阻塞方式
        # p.apply(func=task, args=(i+1,))

    p.close()
    p.join()
    print("主线程执行完毕")
    print((time.time() - start))